iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
AI/ ML & Data

AI 影像處理 30天系列 第 25

[AI 影像處理 30天] [Day 25] 掌控一切:測試開源模型 ControlCom 效果

  • 分享至 

  • xImage
  •  

零、前言

延續前一篇有關 ControlCom 的論文導讀,今天我們將實際測試這個模型的效果。根據論文的介紹,ControlCom 在圖像合成方面有著顯著的優勢,能讓使用者精確地控制合成圖像的細節。本文將使用官方提供的測試資料集 (GitHub) 來檢驗其效果,並確認是否能重現論文中的結果。

一、測試目標

本次測試旨在評估 ControlCom 模型在前景與背景合成中的效果,特別關注模型的操控性和生成圖像的品質。

image.png

圖例說明:

  • BG:背景;FG:前景;
  • Indicator (0,0): Blending;Indicator (1,0): Harmonization;
  • Indicator (0,1): View Synthesis;Indicator (1,1): Composition;

二、測試環境與資料集

  • 硬體環境: 測試需具備至少 16GB 可用記憶體,我們選擇在 Colab 執行。
  • 軟體環境: 使用 Python 並按照官方頁面指示 (GitHub) 安裝相關套件。
  • 預訓練模型: ControlCom 模型的預訓練權重檔案可從 Hugging Face Model Hub 下載。
  • 資料集: 測試資料集使用官方提供的範例 (GitHub),若效果理想,將進一步測試自製資料集。
    • 資料集細節
      • 背景 (Background): 圖片的背景部分。

        image.png

      • 背景遮罩 (Background Mask): 用於指示模型需處理的圖片範圍。

        image.png

      • 遮罩範圍文件 (Bounding Box Doc.): 文件範例如下:

        p1, p2, p3, p4 後景遮罩檔名
        
        250 30 504 497 000000330273_GT.png
        
      • 前景 (Foreground): 需合成至背景的物件部分。

        image.png

      • 前景遮罩 (Foreground Mask): 對應前景的遮罩。

        image.png

      • :所有圖檔須為 512*512 像素的 PNG 格式,且 foreground_maskbackground_mask 的圖片色階需為 "L" (灰階),foregroundbackground 則需為 "RGB" (彩階)。

三、測試步驟

  1. 記憶體擴增:為防止 GPU 記憶體不足,先確認 Colab 記憶體是否足夠。

    from psutil import virtual_memory
    ram_gb = virtual_memory().total / 1e9
    print('Your runtime has {:.1f} gigabytes of available RAM\\n'.format(ram_gb))
    if ram_gb < 20:
      print('To enable a high-RAM runtime, select the Runtime > "Change runtime type"')
      print('menu, and then select High-RAM in the Runtime shape dropdown. Then, ')
      print('re-execute this cell.')
    
    
  2. 程式碼與數據準備

    1. 方案一:使用官方範例,下載專案檔並存至 Colab 目錄。

      %cd /content/ControlCom-Image-Composition
      !git pull <https://github.com/winterdrive/ControlCom-Image-Composition.git>
      
      
    2. 方案二:使用自製資料

      1. git pull 專案檔至 Colab 目錄
      2. 使用 SAM (Segment Anything) 模型為自備的無遮罩的圖像生成實例遮罩,並將資料集整理為 ControlCom 模型所需的格式,包括背景圖像、前景圖像、邊界框、實例遮罩和指示向量。建議使用 OpenCV 進行具體實作。
  3. 安裝所需庫

    %cd /content/ControlCom-Image-Composition/
    !pip install -r requirements.txt
    %cd /content/ControlCom-Image-Composition/src/taming-transformers
    !pip install -e .
    
    
  4. 模型載入:將 ControlCom 模型載入記憶體。

    %cd /content/ControlCom-Image-Composition/checkpoints
    !wget <https://huggingface.co/BCMIZB/Libcom_pretrained_models/resolve/main/ControlCom_blend_harm.pth>
    !wget <https://huggingface.co/BCMIZB/Libcom_pretrained_models/resolve/main/ControlCom_view_comp.pth>
    
    
  5. 執行測試:使用測試資料集中的圖像輸入 ControlCom 模型,並設定不同的指示向量以控制前景的光照和姿態。

    !python scripts/inference.py --task harmonization --outdir results --testdir examples --num_samples 1 --sample_steps 50 --gpu 0
    
    

四、測試結果與分析

  • 官方測試資料:結果良好,輪廓還原程度高,但 NOKIA 標誌未能清晰再現。不過,考慮到人眼也難以辨識前景物件的文字,這個結果仍在合理範圍內。

    image.png

  • 自己準備的測試資料:輪廓還原同樣優異,但內部細節未能清楚再現。

    image.png

    image.png

    image.png

    image.png

五、結論

根據測試結果,ControlCom 的確能在許多場景下有效地合成前景與背景,然而,該模型在前景細節的保持上仍有改進空間,尤其是當前景物件較為複雜時。未來進一步探索 ControlCom 模型的策略可以是新增特定訓練資料集並執行訓練,以便讓其學習更多圖像細節,並在運行後重現。另一方面,這樣的一體化模型,若整合到自動化圖像和影片編輯工具中,將得以簡化圖像和影片的後期製作流程,使 End-to-end 影像合成成為可能。


撰文者: Winston


上一篇
[AI 影像處理 30天] [Day 24] ControlCom 研究介紹
下一篇
[AI 影像處理 30天] [Day 26] 創意與成本:高品質視覺的預算考量 - Colab 運行成本分析
系列文
AI 影像處理 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言